home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Interactive 7
/
PC World Interactive 7.iso
/
online
/
gchess.EXE
/
WINPORT
< prev
Wrap
Text File
|
1991-08-16
|
6KB
|
145 lines
Notes on the Windows port of GNUchess.
Daryl Baker
12/30/90
The core algrothms of the program has been preserved intact, however
due to the memory management requirements of Windows significant changes
to the data structure references were made.
The program is ported using Microsoft C 6.0a, Windows 3.0 and the Windows
3.0 Software Developers Kit. To compile enter "nmake -f chess.mak"
Source file overview;
Windows device independent bitmaps for each piece.
Each bitmap consists of an outline (xxxO.bmp), a mask which is
used to clear the space to draw the piece (xxxM.bmp), and the bitmap
for the piece (xxx.bmp). These are based on the outlines contained
in XCHESS.
BISHOP.BMP KING.BMP KNIGHT.BMP QUEEN.BMP
BISHOPM.BMP KINGM.BMP KNIGHTM.BMP QUEENM.BMP
BISHOPO.BMP KINGO.BMP KNIGHTO.BMP QUEENO.BMP
PAWN.BMP ROOK.BMP
PAWNM.BMP ROOKM.BMP
PAWNO.BMP ROOKO.BMP
Chess.def is the liker definition file required for linking windows files
Resource File: The resouce file contains the definitions for the menus
icons, bitmaps, and dialog boxes.
CHESS.RC ;The resource file
CHESS.ICO ;The program ICON
ABOUT.DLG ;Templates for all dialog boxes
COLOR.DLG
MANUAL.DLG
GETNUM.DLG
PROMOTE.DLG
REVIEW.DLG
SAVEOPEN.DLG
STATS.DLG
TEST.DLG
TIMECNT.DLG
COLOR.H ;Header files to support dialog functions
SAVEOPEN.H
STATS.H
TIMECNT.H
ABOUT.C ;C source to perform dialog functions
COLOR.C ;Adjust the colors
MANUAL.C ;Prompt the user for a manual entered move
NUMDLG.C ;Prompt the user to enter a number
PROMOTE.C ;Give the user a choice of what to promote a pawn to
REVIEW.C ;Review game moves
SAVEOPEN.C ;File open/save prompts
STATS.C ;Display search/look ahead lines
TEST.C ;Test compute speed
TIMECNT.C ;Select duration of game
Header files
GNUCHESS.H
CHESS.H
DEFS.H ;Function prototypes
The source routines gnuchess.c and uxdsp.c have been broken up into
small units (this is mainly to reduce them to smaller sizes to cut
compile time and enable me to get a handle on each module's function)
BOOK.C ;Opening book routines
DSP.C ;Routines from uxdsp.c that do not involve io
EVAL.C ;Gnuchess move evaluation routines
GLOBALS.C ;Definition for all global varibles
INITIALI.C ;Gnuchess initialization routines
SEARCH.C ;Gnuchess search engine
Windows specifc routines
BOARD.C ;Routine to draw board
CHESS.C ;Main program
CREATE.C ;Creates all sub-windows used in program
HITTEST.C ;Handle hit testing the mouse
INIT.C ;Windows initializaiton
INITMENU.C ;Routine to handle state of memu items
MSWDSP.C ;Windows based IO routines for screen
PIECE.C ;Routines to draw pieces
MAKEVER.C ;Utility routine for updating version.h
VERSION.C ;Contains version number
Overview of modifications:
The routine main has been renamed to init_main in file initiali.c. The
first order of business was to move all "large" static data structures to
be dynamicly allocated.
The following varibles were moved:
history, nextdir, nextpos, distdata, taxidata, hashcode, Tree,
GameList, ttable
In all routines that access these varibles the array references were changed
to be consistant with a pointer representation. In violation of good
Windows programming these structures are "LOCKED". This is only a penalty
in real mode, in standard and 386 enhanced windows can move locked segments
without affecting references.
Also many of the static read-only data structures were moved to be "based"
in the code segment. (as opposed to user definded resources). This saves
space in the local heap and since the code segments can be moved this creates
a relocatable data structure. A sample:
static short _based(_segname("_CODE")) KingOpening[64] = {....};
Openning book.
All opening book routines are contained in the file book.c. The opening
book would not fit into the local heap. A 32 Kbyte array is allocated
from the dynamic heap. This array is used to construct a mini-heap to
load the openning book into. If the openning book grows much more this
routine will need to be adjusted. Routines were added to "free" the
book when it is no longer needed. Also all routines that used the book
were fixed to eliminate book=NULL. These routines now call Free_book first.
Help File
The source files for the help file is stored in several files. The DOC
files were created with Word for Windows. The RTF files are created from
the DOC files with a Save As.
CHESS.DOC ---> CHESS.RTF ;Main help file
ARTICLE.DOC ---> ARTICLE.RTF ;An article by Stuart Cracraft on GNU chess
ARTICLE2.DOC ---> ARTICLE2.RTF ;Another article
COPYRIGHT.DOC ---> COPYRIGHT.RTF ;GNU Chess Copyright notice
MOVE-GEN.DOC ---> MOVE-GEN.RTF ;An article about GNU Chess move generator
HEURISTI.DOC ---> HEURISTI.RTF ;Article about GNU Chess heuristics
MATCH.DOC ---> MATCH.RTF ;Games against MACH.